import request from '@/utils/request'

/**
 * 学习打卡相关 API
 */

// ========== 科目管理 ==========

/**
 * 创建学习科目
 * @param {Object} data - 科目数据
 * @param {string} data.name - 科目名称
 * @param {string} data.description - 科目描述（可选）
 * @param {string} data.icon - 科目图标路径（可选）
 * @param {string} data.color - 科目颜色（可选）
 * @param {number} data.target_days - 目标打卡天数（可选）
 * @param {number} data.is_public - 是否公开（可选）
 * @param {number} data.sort_order - 排序顺序（可选）
 * @returns {Promise}
 */
export function createSubject(data) {
  return request.post('/api/study/subjects', data)
}

/**
 * 更新学习科目
 * @param {number} id - 科目ID
 * @param {Object} data - 更新的科目数据
 * @returns {Promise}
 */
export function updateSubject(id, data) {
  return request.put(`/api/study/subjects/${id}`, data)
}

/**
 * 删除学习科目
 * @param {number} id - 科目ID
 * @returns {Promise}
 */
export function deleteSubject(id) {
  return request.delete(`/api/study/subjects/${id}`)
}

/**
 * 获取科目详情
 * @param {number} id - 科目ID
 * @returns {Promise}
 */
export function getSubjectDetail(id) {
  return request.get(`/api/study/subjects/${id}`)
}

/**
 * 获取科目列表
 * @param {Object} params - 查询参数
 * @param {boolean} params.include_public - 是否包含公开科目（可选）
 * @returns {Promise}
 */
export function getSubjects(params = {}) {
  return request.get('/api/study/subjects', params)
}

// ========== 打卡记录 ==========

/**
 * 每日打卡
 * @param {Object} data - 打卡数据
 * @param {number} data.subject_id - 科目ID
 * @param {string} data.check_in_date - 打卡日期（YYYY-MM-DD）
 * @param {number} data.duration_minutes - 学习时长（分钟，可选）
 * @param {string} data.content - 打卡笔记（可选）
 * @param {number} data.mood - 学习心情 1-5（可选）
 * @param {number} data.location_id - 打卡地点ID（可选）
 * @param {Array} data.images - 打卡图片路径数组（可选）
 * @returns {Promise}
 */
export function checkIn(data) {
  return request.post('/api/study/check-in', data)
}

/**
 * 更新打卡记录
 * @param {number} id - 打卡记录ID
 * @param {Object} data - 更新的打卡数据
 * @returns {Promise}
 */
export function updateCheckIn(id, data) {
  return request.put(`/api/study/check-ins/${id}`, data)
}

/**
 * 删除打卡记录
 * @param {number} id - 打卡记录ID
 * @returns {Promise}
 */
export function deleteCheckIn(id) {
  return request.delete(`/api/study/check-ins/${id}`)
}

/**
 * 获取打卡详情
 * @param {number} id - 打卡记录ID
 * @returns {Promise}
 */
export function getCheckInDetail(id) {
  return request.get(`/api/study/check-ins/${id}`)
}

/**
 * 获取打卡列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码（可选）
 * @param {number} params.page_size - 每页数量（可选）
 * @param {number} params.subject_id - 科目ID筛选（可选）
 * @param {string} params.start_date - 开始日期筛选（可选）
 * @param {string} params.end_date - 结束日期筛选（可选）
 * @param {number} params.mood - 心情筛选（可选）
 * @param {number} params.status - 状态筛选（可选）
 * @returns {Promise}
 */
export function getCheckIns(params = {}) {
  return request.get('/api/study/check-ins', params)
}

// ========== 统计查询 ==========

/**
 * 获取统计汇总
 * @param {Object} params - 查询参数
 * @param {number} params.subject_id - 科目ID（可选，不传则统计全部科目）
 * @returns {Promise}
 */
export function getStatisticsSummary(params = {}) {
  return request.get('/api/study/statistics/summary', params)
}

/**
 * 获取日历热力图数据
 * @param {Object} params - 查询参数
 * @param {number} params.year - 年份（必填）
 * @param {number} params.month - 月份（可选）
 * @param {number} params.subject_id - 科目ID（可选）
 * @returns {Promise}
 */
export function getCalendarData(params) {
  return request.get('/api/study/statistics/calendar', params)
}
